﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace WebTranslator {
	[Serializable]
	public class Tekst {
		public string nazwa;
		public string autor;
		public string nazwaorginalu;
		public string nazwatlumaczenia;
		public List<string> Orginal = new List<string>();
		public List<List<Tlumaczenie>> Tlumaczenia = new List<List<Tlumaczenie>>();

		public Tekst(string nazwa, string autor, string tex, string parser, string nazwaorginalu1, string nazwatlumaczenia1) {
			this.nazwa = nazwa;
			this.autor = autor;
			this.nazwaorginalu = nazwaorginalu1;
			this.nazwatlumaczenia = nazwatlumaczenia1;
			if (parser == "" && tex == "") return;
			char c = '`';
			string wyn = "";
			string cc = "";
			cc += c;
			tex = tex.Replace(parser, cc);
			foreach (char e in tex) if (e != c) wyn += e;
				else {
					Orginal.Add(wyn); wyn = "";
				}
			Orginal.Add(wyn);
			for (int i = 0; i < Orginal.Count; i++) Tlumaczenia.Add(new List<Tlumaczenie>());
		}

		public void Zapisz(string nazwapliku) {
			if (File.Exists(nazwapliku)) File.Delete(nazwapliku);
			FileStream f = File.OpenWrite(nazwapliku);
			Stream sw = f as Stream;
			BinaryFormatter b = new BinaryFormatter();
			b.Serialize(sw, this);
			sw.Close();
		}

		public static Tekst Wczytaj(string nazwapliku) {
			Tekst t = null;
			try {
				FileStream f = File.OpenRead(nazwapliku);
				Stream sw = f as Stream;
				BinaryFormatter b = new BinaryFormatter();
				t = b.Deserialize(f) as Tekst;
				sw.Close();
			} catch (Exception ex) { Console.WriteLine(ex); return null; }
			return t;
		}

		public void DodajTlumaczenie(int nr_fragmentu, string autor, string tekst) {
			Tlumaczenie t1 = new Tlumaczenie();
			t1.autor = autor;
			t1.tekst = tekst;
			Tlumaczenia[nr_fragmentu].Add(t1);
		}

		public void Czysc() {
			Orginal.Clear();
			Tlumaczenia.Clear();
		}

		public override bool Equals(object obj) {
			return ((obj as Tekst).autor == autor && (obj as Tekst).nazwa == nazwa);
		}
		public override int GetHashCode() {
			return (autor + nazwa).GetHashCode();
		}
	}

	[Serializable]
	public class Tlumaczenie {
		public string tekst;
		public string autor;
	}


}
